home *** CD-ROM | disk | FTP | other *** search
/ Aminet 2 / Aminet AMIGA CDROM (1994)(Walnut Creek)[Feb 1994][W.O. 44790-1].iso / Aminet / util / libs / MultiReq.lha / MultiReq / C / TestGads.c < prev    next >
C/C++ Source or Header  |  1992-11-12  |  11KB  |  743 lines

  1. extern struct Screen *OpenScreen();
  2.  
  3. extern struct TextAttr Topaz80;
  4.  
  5. void itoa();
  6.  
  7. /* The Gadgets */
  8.  
  9. static struct Gadget FileReqGadg =
  10. {
  11.   NULL,
  12.   9,159,
  13.   212,19,
  14.   GADGHCOMP,
  15.   RELVERIFY,
  16.   BOOLGADGET,
  17.   NULL,
  18.   NULL,
  19.   NULL,
  20.   NULL,
  21.   NULL,
  22.   ID_FILEREQ,
  23.   BORDER(BOOLBORDER,2,1,0)
  24. };
  25.  
  26. static struct StringInfo FileSInfo =
  27. {
  28.   NULL,
  29.   NULL,
  30.   0,
  31.   32,
  32.   0,
  33.   0,0,0,0,0,
  34.   0,
  35.   0,
  36.   NULL
  37. };
  38.  
  39. static struct Gadget FileGadg =
  40. {
  41.   &FileReqGadg,
  42.   55,146,
  43.   253,8,
  44.   GADGHCOMP,
  45.   RELVERIFY,
  46.   STRGADGET,
  47.   NULL,
  48.   NULL,
  49.   NULL,
  50.   NULL,
  51.   (APTR)&FileSInfo,
  52.   ID_FILE,
  53.   BORDER(FILLEDSTRBORDER,2,1,0)
  54. };
  55.  
  56. static struct Gadget Current2Gadg =
  57. {
  58.   &FileGadg,
  59.   436,129,
  60.   69,12,
  61.   GADGHCOMP,
  62.   RELVERIFY,
  63.   BOOLGADGET,
  64.   NULL,
  65.   NULL,
  66.   NULL,
  67.   NULL,
  68.   NULL,
  69.   ID_CURRENT2,
  70.   BORDER(FILLEDBORDER,2,1,0)
  71. };
  72.  
  73. static struct Gadget Current1Gadg =
  74. {
  75.   &Current2Gadg,
  76.   436,100,
  77.   69,12,
  78.   GADGHCOMP,
  79.   RELVERIFY,
  80.   BOOLGADGET,
  81.   NULL,
  82.   NULL,
  83.   NULL,
  84.   NULL,
  85.   NULL,
  86.   ID_CURRENT1,
  87.   BORDER(FILLEDBORDER,2,1,0)
  88. };
  89.  
  90. static struct StringInfo Drawer2SInfo =
  91. {
  92.   NULL,
  93.   NULL,
  94.   0,
  95.   160,
  96.   0,
  97.   0,0,0,0,0,
  98.   0,
  99.   0,
  100.   NULL
  101. };
  102.  
  103. static struct Gadget Drawer2Gadg =
  104. {
  105.   &Current1Gadg,
  106.   77,131,
  107.   343,8,
  108.   GADGHCOMP,
  109.   RELVERIFY,
  110.   STRGADGET,
  111.   NULL,
  112.   NULL,
  113.   NULL,
  114.   NULL,
  115.   (APTR)&Drawer2SInfo,
  116.   ID_DRAWER2,
  117.   BORDER(FILLEDSTRBORDER,2,1,0)
  118. };
  119.  
  120. static struct StringInfo Drawer1SInfo =
  121. {
  122.   NULL,
  123.   NULL,
  124.   0,
  125.   160,
  126.   0,
  127.   0,0,0,0,0,
  128.   0,
  129.   0,
  130.   NULL
  131. };
  132.  
  133. static struct Gadget Drawer1Gadg =
  134. {
  135.   &Drawer2Gadg,
  136.   77,102,
  137.   343,8,
  138.   GADGHCOMP,
  139.   RELVERIFY,
  140.   STRGADGET,
  141.   NULL,
  142.   NULL,
  143.   NULL,
  144.   NULL,
  145.   (APTR)&Drawer1SInfo,
  146.   ID_DRAWER1,
  147.   BORDER(FILLEDSTRBORDER,2,1,0)
  148. };
  149.  
  150. static struct Gadget Auto2Gadg =
  151. {
  152.   &Drawer1Gadg,
  153.   112,115,
  154.   78,12,
  155.   GADGHNONE,
  156.   RELVERIFY,
  157.   BOOLGADGET,
  158.   NULL,
  159.   NULL,
  160.   NULL,
  161.   NULL,
  162.   NULL,
  163.   ID_AUTO2,
  164.   BORDER(FILLEDBORDER,2,1,3)
  165. };
  166.  
  167. static struct Gadget Auto1Gadg =
  168. {
  169.   &Auto2Gadg,
  170.   112,86,
  171.   78,12,
  172.   GADGHNONE,
  173.   RELVERIFY,
  174.   BOOLGADGET,
  175.   NULL,
  176.   NULL,
  177.   NULL,
  178.   NULL,
  179.   NULL,
  180.   ID_AUTO1,
  181.   BORDER(FILLEDBORDER,2,1,3)
  182. };
  183.  
  184. static struct Gadget InfoGadg =
  185. {
  186.   &Auto1Gadg,
  187.   391,71,
  188.   114,12,
  189.   GADGHCOMP,
  190.   RELVERIFY,
  191.   BOOLGADGET,
  192.   NULL,
  193.   NULL,
  194.   NULL,
  195.   NULL,
  196.   NULL,
  197.   ID_INFO,
  198.   BORDER(CYCLEIMG+FILLEDBORDER,2,1,0)
  199. };
  200.  
  201. static struct StringInfo HideSInfo =
  202. {
  203.   NULL,
  204.   NULL,
  205.   0,
  206.   32,
  207.   0,
  208.   0,0,0,0,0,
  209.   0,
  210.   0,
  211.   NULL
  212. };
  213.  
  214. static struct Gadget HideGadg =
  215. {
  216.   &InfoGadg,
  217.   229,73,
  218.   93,8,
  219.   GADGHCOMP,
  220.   RELVERIFY,
  221.   STRGADGET,
  222.   NULL,
  223.   NULL,
  224.   NULL,
  225.   NULL,
  226.   (APTR)&HideSInfo,
  227.   ID_HIDE,
  228.   BORDER(FILLEDSTRBORDER,2,1,0)
  229. };
  230.  
  231. static struct StringInfo ShowSInfo =
  232. {
  233.   NULL,
  234.   NULL,
  235.   0,
  236.   32,
  237.   0,
  238.   0,0,0,0,0,
  239.   0,
  240.   0,
  241.   NULL
  242. };
  243.  
  244. static struct Gadget ShowGadg =
  245. {
  246.   &HideGadg,
  247.   61,73,
  248.   93,8,
  249.   GADGHCOMP,
  250.   RELVERIFY,
  251.   STRGADGET,
  252.   NULL,
  253.   NULL,
  254.   NULL,
  255.   NULL,
  256.   (APTR)&ShowSInfo,
  257.   ID_SHOW,
  258.   BORDER(FILLEDSTRBORDER,2,1,0)
  259. };
  260.  
  261. static struct Gadget DirectroyGadg =
  262. {
  263.   &ShowGadg,
  264.   391,57,
  265.   114,12,
  266.   GADGHCOMP,
  267.   RELVERIFY,
  268.   BOOLGADGET,
  269.   NULL,
  270.   NULL,
  271.   NULL,
  272.   NULL,
  273.   NULL,
  274.   ID_DIRECTORY,
  275.   BORDER(CYCLEIMG+FILLEDBORDER,2,1,0)
  276. };
  277.  
  278. static UBYTE TopEdgeBuff[5];
  279. static struct StringInfo TopEdgeSInfo =
  280. {
  281.   TopEdgeBuff,
  282.   NULL,
  283.   0,
  284.   5,
  285.   0,
  286.   0,0,0,0,0,
  287.   0,
  288.   0,
  289.   NULL
  290. };
  291.  
  292. static struct Gadget TopEdgeGadg =
  293. {
  294.   &DirectroyGadg,
  295.   221,59,
  296.   41,8,
  297.   GADGHCOMP,
  298.   RELVERIFY+LONGINT,
  299.   STRGADGET,
  300.   NULL,
  301.   NULL,
  302.   NULL,
  303.   NULL,
  304.   (APTR)&TopEdgeSInfo,
  305.   ID_TOPEDGE,
  306.   BORDER(FILLEDSTRBORDER,2,1,0)
  307. };
  308.  
  309. static UBYTE LeftEdgeBuff[5];
  310. static struct StringInfo LeftEdgeSInfo =
  311. {
  312.   LeftEdgeBuff,
  313.   NULL,
  314.   0,
  315.   5,
  316.   0,
  317.   0,0,0,0,0,
  318.   0,
  319.   0,
  320.   NULL
  321. };
  322.  
  323. static struct Gadget LeftEdgeGadg =
  324. {
  325.   &TopEdgeGadg,
  326.   93,59,
  327.   41,8,
  328.   GADGHCOMP,
  329.   RELVERIFY+LONGINT,
  330.   STRGADGET,
  331.   NULL,
  332.   NULL,
  333.   NULL,
  334.   NULL,
  335.   (APTR)&LeftEdgeSInfo,
  336.   ID_LEFTEDGE,
  337.   BORDER(FILLEDSTRBORDER,2,1,0)
  338. };
  339.  
  340. static UBYTE OKTextBuff[9]="go on";
  341. static struct StringInfo OKTextSInfo =
  342. {
  343.   OKTextBuff,
  344.   NULL,
  345.   0,
  346.   9,
  347.   0,
  348.   0,0,0,0,0,
  349.   0,
  350.   0,
  351.   NULL
  352. };
  353.  
  354. static struct Gadget OKTextGadg =
  355. {
  356.   &LeftEdgeGadg,
  357.   427,45,
  358.   75,8,
  359.   GADGHCOMP,
  360.   RELVERIFY,
  361.   STRGADGET,
  362.   NULL,
  363.   NULL,
  364.   NULL,
  365.   NULL,
  366.   (APTR)&OKTextSInfo,
  367.   ID_OKTEXT,
  368.   BORDER(FILLEDSTRBORDER,2,1,0)
  369. };
  370.  
  371. static UBYTE TitleBuff[54]="The multitasking FileRequester © by Andreas Krebs";
  372. static struct StringInfo TitleSInfo =
  373. {
  374.   TitleBuff,
  375.   NULL,
  376.   0,
  377.   54,
  378.   0,
  379.   0,0,0,0,0,
  380.   0,
  381.   0,
  382.   NULL
  383. };
  384.  
  385. static struct Gadget TitleGadg =
  386. {
  387.   &OKTextGadg,
  388.   69,45,
  389.   253,8,
  390.   GADGHCOMP,
  391.   RELVERIFY,
  392.   STRGADGET,
  393.   NULL,
  394.   NULL,
  395.   NULL,
  396.   NULL,
  397.   (APTR)&TitleSInfo,
  398.   ID_TITLE,
  399.   BORDER(FILLEDSTRBORDER,2,1,0)
  400. };
  401.  
  402. static struct Gadget ScrModeGadg =
  403. {
  404.   &TitleGadg,
  405.   349,29,
  406.   83,12,
  407.   GADGHCOMP,
  408.   RELVERIFY,
  409.   BOOLGADGET,
  410.   NULL,
  411.   NULL,
  412.   NULL,
  413.   NULL,
  414.   NULL,
  415.   ID_SCRMODE,
  416.   BORDER(CYCLEIMG+FILLEDBORDER,2,1,0)
  417. };
  418.  
  419. struct Gadget ScreenGadg =
  420. {
  421.   &ScrModeGadg,
  422.   74,29,
  423.   83,12,
  424.   GADGHCOMP,
  425.   RELVERIFY,
  426.   BOOLGADGET,
  427.   NULL,
  428.   NULL,
  429.   NULL,
  430.   NULL,
  431.   NULL,
  432.   ID_SCREEN,
  433.   BORDER(CYCLEIMG+FILLEDBORDER,2,1,0)
  434. };
  435.  
  436.  
  437. /* My texts */
  438.  
  439. static UBYTE DrawerTxt[]="Drawer:";
  440. static UBYTE CurrentTxt[]="Current:";
  441.  
  442. static struct MRText MyTexts[]=
  443. {
  444.   {   8,  25,  2, 36, (UBYTE *)"Define parameters for FileRequester:" },
  445.   {  14,  37,  1,  7, (UBYTE *)"Screen:" },
  446.   { 193,  37,  1, 19, (UBYTE *)"Custom screen mode:" },
  447.   { 384,  37,  1,  4, (UBYTE *)"Lace" },
  448.   {  14,  51,  1,  6, (UBYTE *)"Title:" },
  449.   { 340,  51,  1, 10, (UBYTE *)"Okay text:" },
  450.   {  14,  65,  1,  9, (UBYTE *)"LeftEdge:" },
  451.   { 150,  65,  1,  8, (UBYTE *)"TopEdge:" },
  452.   { 323,  65,  2,  8, (UBYTE *)"Display:" },
  453.   { 418,  65,  1,  9, (UBYTE *)"Directory" },
  454.   {  14,  79,  1,  5, (UBYTE *)"Show:" },
  455.   { 182,  79,  1,  5, (UBYTE *)"Hide:" },
  456.   { 458,  79,  1,  5, (UBYTE *)".info" },
  457.   {   8,  94,  2, 11, (UBYTE *)"Directory1:" },
  458.   {  14, 108,  1,  7, (UBYTE *)DrawerTxt },
  459.   { 443, 108,  1,  7, (UBYTE *)CurrentTxt },
  460.   {   8, 123,  2, 11, (UBYTE *)"Directory2:" },
  461.   {  14, 137,  1,  7, (UBYTE *)DrawerTxt },
  462.   { 443, 137,  1,  7, (UBYTE *)CurrentTxt },
  463.   {   8, 152,  2,  5, (UBYTE *)"File:" },
  464.   {  40, 171,  2, 19, (UBYTE *)"Start FileRequester" },
  465.   { 297, 171,  2, 14, (UBYTE *)"Return status:" },
  466.   {   8, 190,  2,  9, (UBYTE *)"Selected:" },
  467.   {  -1,  -1, -1, -1, (UBYTE *)-1L }        /* no further entries */
  468. };
  469.  
  470. void SetGadgetBuffers(fr)
  471. register struct FileReq *fr;
  472. {
  473.   FileSInfo.Buffer=fr->FileBuff;
  474.   ShowSInfo.Buffer=fr->ShowBuff;
  475.   HideSInfo.Buffer=fr->HideBuff;
  476.  
  477.   Drawer1SInfo.Buffer=fr->FileList[0].DrawerBuff;
  478.   StrCpy((UBYTE *)"SYS:",Drawer1SInfo.Buffer);
  479.   fr->FileList[0].AutoRead=DO_AUTOREAD;
  480.  
  481.   Drawer2SInfo.Buffer=fr->FileList[1].DrawerBuff;
  482.   GetCurrentPath(Drawer2SInfo.Buffer);
  483.   fr->FileList[1].AutoRead=DO_AUTOREAD;
  484.  
  485.   fr->TitleString=TitleBuff;
  486.   fr->OkayString=OKTextBuff;
  487. }
  488.  
  489. void GetCurrent(win,fr,num)
  490. register struct Window *win;
  491. register struct FileReq *fr;
  492. {
  493.   GetCurrentPath(fr->FileList[num].DrawerBuff);
  494.  
  495.   if(!num)
  496.     RefreshGList(&Drawer1Gadg,win,NULL,1L);
  497.   else
  498.     RefreshGList(&Drawer2Gadg,win,NULL,1L);
  499. }
  500.  
  501. void CreateDisplay(win,rp)
  502. register struct Window *win;
  503. register struct RastPort *rp;
  504. {
  505.   SetDrMd(rp,JAM1);
  506.   SetAPen(rp,3L);
  507.  
  508.   RectFill(rp,(ULONG)win->BorderLeft,(ULONG)win->BorderTop,
  509.               (ULONG)(win->Width - win->BorderRight -1),
  510.               (ULONG)(win->Height - win->BorderBottom-1));
  511.  
  512.   DrawGadgetBorder(&ScreenGadg,win,-1L);
  513.  
  514.   SetDrMd(rp,JAM1);        /* make sure that DrawMode is JAM1 */
  515.   DrawTexts(rp,MyTexts);
  516. }
  517.  
  518. static UBYTE ModeTxt[][6]=
  519. {
  520.   " Lace ",
  521.   "NoLace"
  522. };
  523.  
  524. void SetScreenMode(rp,mode)
  525. register struct RastPort *rp;
  526. register BOOL mode;
  527. {
  528.   SetDrMd(rp,JAM2);
  529.   SetAPen(rp,1L);
  530.   SetBPen(rp,0L);
  531.  
  532.   Move(rp,376L,37L);
  533.   Text(rp,ModeTxt[mode],6L);
  534. }
  535.  
  536. static UBYTE TypeTxt[][6]=
  537. {
  538.   "WBench",
  539.   "Custom"
  540. };
  541.  
  542. void SetScreenType(win,rp,type,mode)
  543. register struct Window *win;
  544. register struct RastPort *rp;
  545. register BOOL type,mode;
  546. {
  547.   SetDrMd(rp,JAM2);
  548.   SetAPen(rp,1L);
  549.   SetBPen(rp,0L);
  550.  
  551.   Move(rp,102L,37L);
  552.   Text(rp,TypeTxt[type],6L);
  553.  
  554.   if(type)
  555.   {
  556.     OnGadget(&ScrModeGadg,win,NULL);
  557.     DrawGadgetBorder(&ScrModeGadg,win,1L);
  558.  
  559.     SetScreenMode(rp,mode);
  560.   }
  561.   else
  562.     OffGadget(&ScrModeGadg,win,NULL);
  563. }
  564.  
  565. void SetDirectory(rp,num)
  566. register struct RastPort *rp;
  567. register UWORD num;
  568. {
  569.   UBYTE txt;
  570.  
  571.   SetDrMd(rp,JAM2);
  572.   SetAPen(rp,1L);
  573.   SetBPen(rp,0L);
  574.  
  575.   txt=(UBYTE)num+'1';
  576.   Move(rp,490L,65L);
  577.   Text(rp,&txt,1L);
  578. }
  579.  
  580. static UBYTE InfoTxt[][4] =
  581. {
  582.   "Hide",
  583.   "Show"
  584. };
  585.  
  586. void SetInfo(rp,info)
  587. register struct RastPort *rp;
  588. register BOOL info;
  589. {
  590.   SetDrMd(rp,JAM2);
  591.   SetAPen(rp,1L);
  592.   SetBPen(rp,0L);
  593.  
  594.   Move(rp,418L,79L);
  595.   Text(rp,InfoTxt[info],4L);
  596. }
  597.  
  598. void SetAutoRead(win,rp,gadg,autoread)
  599. register struct Window *win;
  600. register struct RastPort *rp;
  601. register struct Gadget *gadg;
  602. register BOOL autoread;
  603. {
  604.   if(autoread)
  605.     gadg->UserData=BORDER(FILLEDBORDER,1,2,0);
  606.   else
  607.     gadg->UserData=BORDER(FILLEDBORDER,2,1,3);
  608.  
  609.   DrawGadgetBorder(gadg,win,1L);
  610.  
  611.   SetDrMd(rp,JAM1);
  612.   SetAPen(rp,(ULONG)(autoread+1));
  613.   Move(rp,(ULONG)(gadg->LeftEdge+7),(ULONG)(gadg->TopEdge+8));
  614.   Text(rp,"AutoRead",8L);
  615. }
  616.  
  617. void SetAutoGadgets(win,rp,fr)
  618. register struct Window *win;
  619. register struct RastPort *rp;
  620. register struct FileReq *fr;
  621. {
  622.   SetAutoRead(win,rp,&Auto1Gadg,fr->FileList[0].AutoRead);
  623.   SetAutoRead(win,rp,&Auto2Gadg,fr->FileList[1].AutoRead);
  624. }
  625.  
  626. void SetEdge(win,fr)
  627. register struct Window *win;
  628. register struct FileReq *fr;
  629. {
  630.   itoa(fr->LeftEdge,LeftEdgeBuff);
  631.   LeftEdgeSInfo.LongInt=(ULONG)fr->LeftEdge;
  632.   itoa(fr->TopEdge,TopEdgeBuff);
  633.   TopEdgeSInfo.LongInt=(ULONG)fr->TopEdge;
  634.  
  635.   RefreshGList(&LeftEdgeGadg,win,NULL,2L);
  636. }
  637.  
  638. void GetEdge(fr)
  639. register struct FileReq *fr;
  640. {
  641.   fr->LeftEdge=(UWORD)LeftEdgeSInfo.LongInt;
  642.   fr->TopEdge=(UWORD)TopEdgeSInfo.LongInt;
  643. }
  644.  
  645.  
  646. void itoa(i,s)
  647. register UWORD i;
  648. register UBYTE *s;
  649. {
  650.   register BOOL zero=(BOOL)FALSE;
  651.   register UWORD div;
  652.   register UBYTE digit;
  653.  
  654.   for(div=10000;div>1;div/=10)
  655.   {
  656.     digit=i/div;
  657.     if(zero || digit)
  658.     {
  659.       *s++=digit+'0';
  660.       zero=(BOOL)TRUE;
  661.     }
  662.     i=i%div;
  663.   }
  664.  
  665.   *s++=i+'0';
  666.  
  667.   *s=0;
  668. }
  669.  
  670. static struct NewScreen NewTestScreen =
  671. {
  672.   0,0,
  673.   640,400,
  674.   2,
  675.   1,3,
  676.   HIRES|LACE,
  677.   CUSTOMSCREEN|SCREENBEHIND,
  678.   &Topaz80,
  679.   (UBYTE *)"Custom screen for multireq.library test program",
  680.   NULL,
  681.   NULL
  682. };
  683.  
  684. struct Screen *GetScreen(type,mode)
  685. register UWORD type,mode;
  686. {
  687.   register struct Screen *scrn;
  688.  
  689.   if(mode)
  690.   {
  691.     NewTestScreen.Height=200;
  692.     NewTestScreen.ViewModes=HIRES;
  693.   }
  694.   else
  695.   {
  696.     NewTestScreen.Height=400;
  697.     NewTestScreen.ViewModes=HIRES|LACE;
  698.   }
  699.  
  700.   if(type)
  701.     scrn=OpenScreen(&NewTestScreen);
  702.   else
  703.     scrn=NULL;
  704.  
  705.   return(scrn);
  706. }
  707.  
  708. static UBYTE StatusTxt[][11] =
  709. {
  710.   "Error      ",
  711.   "Cancel     ",
  712.   "Close      ",
  713.   "File Return",
  714.   "DoubleClick",
  715.   "Okay       "
  716. };
  717.  
  718. void WriteStatus(rp,fr)
  719. register struct RastPort *rp;
  720. register struct FileReq *fr;
  721. {
  722.   register UWORD len;
  723.  
  724.   SetDrMd(rp,JAM2);
  725.   SetAPen(rp,1L);
  726.   SetBPen(rp,3L);
  727.  
  728.   Move(rp,417L,171L);
  729.   Text(rp,StatusTxt[fr->ReturnStatus],11L);
  730.  
  731.   SetDrMd(rp,JAM1);
  732.   SetAPen(rp,3L);
  733.   RectFill(rp,88L,183L,506L,191L);
  734.  
  735.   len=StrLen(fr->FileNameBuff);
  736.   if(len>52) len=52;
  737.  
  738.   SetAPen(rp,1L);
  739.   Move(rp,88L,190L);
  740.   Text(rp,fr->FileNameBuff,(ULONG)len);
  741. }
  742.  
  743.